SI Object Browser for Postgres は、データベースに関する作業の多くをGUI環境で行う事を可能にする、プログラマやデータベース管理者の為の開発・保守支援ツールです。
SI Object Browser for Postgres には以下のような特徴があります。
■一括処理簡略化の追求
SQLコマンドやスクリプトを実行する事で対応できた事でもデータベースオブジェクトが増えるにつれて処理が煩雑になります。その点 SI Object Browser では「任意の複数のオブジェクトに対して特定の処理を行う」という事がSQL文を一切入力せずに実現可能です。更に利用者が任意の機能を追加する事も可能です。
■グラフィカルなデータベースオブジェクト表示
カスタマイズ可能なツリー表示機能や、表示情報でソートする事ができる一覧表示機能で、目的のオブジェクトをすばやく検索する事ができます。オブジェクト名やスクリプト全文検索による絞込みも可能です。
■ストアドプログラム作成機能
プロシージャ、ファンクション等のストアドプログラムを、スクリーンエディタを使って作成、編集する事ができます。また、コンパイルエラーの発生場所の指摘や、引数を入力可能な実行ウィンドウ、実行時エラーの表示等、強力なデバッグ環境も使用可能です。
■強力なSQL実行機能
SI Object BrowserのSQL実行機能は、スクリーンエディタにより自由にSQL文を編集する事ができます。SQLビルダ機能により、SQL文自体を GUI 操作により生成することが可能で、実行結果はグリッド上に展開される為に大変見やすく、しかも可能な場合は、表示された結果を直接編集しデータベースに反映させる事も可能です。入力したSQL文の実行計画も即座に表示する事が可能な為、出力結果と実行計画を交互に確認しながら効率のよいSQL文を作成する事ができます。エクスプローラからのドラッグ&ドロップにも対応し、既にSQL文をファイルに保存している場合には、一度もキーボードに触れる事なく、マウス操作だけでSQL文を実行できます。
■データベース管理者機能
ユーザー、スキーマ、テーブルスペースのGUIでの作成、修正する事ができます。また、接続中のセッションやロック情報などが一覧表示できます。
■データベースオブジェクトのスクリプト出力
データベースオブジェクトのSQLスクリプトも簡単に出力する事ができます。出力方法も柔軟に選ぶ事ができ、例えば同時に出力したオブジェクトのスクリプトを一つのファイルにしたり、スキーマ名を除いた状態で出力する事ができます。また、テーブルオブジェクトに関しては、データもINSERT文の形で出力する事ができる為、他の環境への移行や、バックアップ目的にも使用できます。
■パフォーマンスチューニング機能
パフォーマンスチューニングを手助けする機能があります。アプリケーションが発行するSQLを捕まえて負荷の高いSQLの抽出、また、推奨インデックスを自動作成し、GUI上でチューニングを行うことが可能です。パフォーマンス問題が発生した際の原因分析に役立てることができます。
■ユーザー、オブジェクトに対する権限の表示及び付与機能
ユーザーに対するロールやシステム権限、オブジェクト権限の一覧表示を表示、修正する事ができます。オブジェクト権限に関しては、複数のオブジェクトに対してまとめて操作する事もできます。
■その他、プログラム開発・データベース保守を支援する便利な機能
SQL文を作成する際の、テーブル名や項目名を入力する手間を省く「表・列」ウィンドウ。
データベースオブジェクト間の関係を表示する「クロスリファレンス」ウィンドウ。
Microsoft Excelへのデータ出力機能。
SQL文の文法を忘れた場合に便利なSQLテンプレート(簡易リファレンス)。
パフォーマンステスト時には欠かせないテストデータ生成を自動的に行う「データ生成ツール」機能。
■PostgreSQL拡張モジュールのインストール
SI Object Browser for Postgresの機能「SQLキャッチ」「テーブルアクセス表」「デバッグ実行」「待機イベント情報」を使うには、pg_stat_statements、plugin_debugger、edb_wait_statesモジュールが必要になります。
pg_stat_statementsは追加で提供されているモジュールの一つで、サーバで実行されたすべてのSQL文の実行回数や実行時間などの統計情報を記録します。
plugin_debuggerはデバッグ実行に必要な関数群のモジュールで、ステップ実行、ブレークポイントなどの設定が可能となります。
edb_wait_statesはEDB Ver.11より追加で提供されているモジュールの一つで、データベースで発生した待機イベントや待機イベント内で実行されたクエリなどを記録します。
edb_wait_statesを使用するにはedb_wait_states.dllがインストールされている必要があります。
◎PostgreSQL拡張モジュールの設定手順
一部機能を利用する場合は、PostgreSQLの仕様に従い、必要に応じて下記の設定を行ってください。
・SQLキャッチ機能
・テーブルアクセス表機能
・待機イベント情報機能
・ストアドのデバッグ機能
設定ファイル postgresql.conf を編集します。
(Amazon RDS for PostgreSQL/Amazon Aurora PostgreSQLでは不要)
shared_preload_libraries = 'pg_stat_statements, plugin_debugger, edb_wait_states'
pg_stat_statements.max = 1000 # 収集する SQL の最大数
pg_stat_statements.track = top # topはクライアントから直接実行された SQL のみ
pg_stat_statements.save = on # onはデータベースサーバの停止時に保存
データベースサーバを再起動します。
pg_stat_statements、edb_wait_states モジュールの関数とビューを作成します。
使用しているデータベースのpublicスキーマにて以下のSQLを発行します。
create extension pg_stat_statements;
create extension plpgsql;
create extension pldbgapi;
create extension edb_wait_states;
以上の手順により SI Object Browser for Postgres から「SQLキャッチ」「テーブルアクセス表」「デバッグ実行」「待機イベント情報」の使用が可能となります。
※pg_stat_statementsの注意点
pg_stat_statementsを使用するとパフォーマンスが低下するため、
本番環境やパフォーマンステストを行う際は無効にすることを推奨します。
設定ファイルにて以下のパラメータをセットする事で無効にすることができます。
pg_stat_statements.track = none
設定ファイル変更後、SQL実行画面等で以下のSQLを実行します。
SELECT pg_reload_conf();
※edb_wait_statesの注意点
edb_wait_statesはEDB Ver.11以降でのみ利用可能な拡張モジュールです。
PostgreSQLおよびEDB Ver.10以前ではご利用いただけません。
■バックアップ、リストアを使用するために
バックアップ、リストアはクライアント側にてpg_dump.exe/pg_restore.exe、pgpass.confを使用するため、PostgreSQLをクライアント側にインストールする必要があります。
PostgreSQL を初回インストールした場合、「pgpass.conf」ファイルは作成されません。下記の設定内容を参考に、テキストファイルで準備して下さい。
| 項目名 | 説明 |
|---|---|
| ファイルの格納先 | %APPDATA%\Roaming\postgresql |
| ファイル名 | pgpass.conf |
| 記載内容 | [hostname]:[port]:[database]:[username]:[password] 例 : localhost:5432:*:postgres:postgres hostname... TCP接続先のホスト名 port... 接続先ポート番号 database... TCP接続先のデータベース username... ログインユーザー password... ログインユーザーのパスワード |
■バックアップ/リストアで使用するツールについて
「バックアップ」「リストア」を利用するにあたり、DBサーバーと同一製品、同一バージョンのpg_dump.exe/pg_restore.exeをクライアント側に用意する必要があります。
DBサーバーが64bitOSである場合には、64bit向けのpg_dump.exe/pg_restore.exeを利用するため、64bitOSのクライアントから「バックアップ」「リストア」をご利用ください。
■データ型についての注意点
SI Object Browser for Postgres では、基本的に扱える型は「数値/論理値/文字/日付(タイムゾーンやinterval型等を除く)/Bytea型」になります。
配列/TYPE型は使用できません。
ただし、テーブル定義では全ての型を使用する事ができます。